import java.util.Scanner;



public class driCandado{

	public static void main(String [] args){
	
	
		String estado = "cerrada";
		String op;
		int cuenta = 0;
		int digito;
		Candado obj;
		Scanner ent = new Scanner(System.in);
		int longitud;
		String accion = "introducir combinacion";
		int error = 0;
		boolean est;
		
		System.out.println("desea ingresar su propia combinacion, o utilizar 9-0-21-0");
		System.out.println("1. si    2. no");
		op = ent.next();
		while((!op.equals("1")) && (!op.equals("2"))){
			System.out.print("ingrese una opcion valida : ");
				op = ent.next();
				}
		if(op.equals("1")){
		try{
		System.out.println("ingrese el numero de digitos de su combinacion");
		longitud = ent.nextInt();
		if(longitud > 0){
		obj = new Candado(longitud);
		while(cuenta < longitud){
			System.out.println("ingrese su dato : " + (cuenta + 1) + " ");
			digito = ent.nextInt();
			
			if((digito >=0) && (digito<=25)){
			
			obj.agregar(digito, cuenta);
			cuenta++;
			}
			else{
				obj = new Candado();
				cuenta = 0;
				System.out.println("ha ingresado un dato incorrecto, la contrasena sera  9-0-21-0");
				break;
			}
			
		}
		cuenta = 0;
		}
		else{
			obj = new Candado();
			cuenta = 0;
			System.out.println("ha ingresado un dato incorrecto, la contrasena sera  9-0-21-0");
			
		}
		}
		
		
		catch(Exception ex){
			obj = new Candado();
			cuenta = 0;
			System.out.println("ha ingresado un dato incorrecto, la contrasena sera  9-0-21-0");
			ent.next();
		}
		
		}
		
		else{
			obj = new Candado();
			System.out.println(" la contrasena sera  9-0-21-0");
		
		
		}
		
		while ((true)){
		System.out.println("la cerradura esta " + estado);
		System.out.println("1. " + accion);
		System.out.println("2. salir ");
		op = ent.next();
		while((!op.equals("1")) && (!op.equals("2"))){
			System.out.print("ingrese una opcion valida : ");
				op = ent.next();
				}
		if (op.equals("1")){
		if(estado.equals("cerrada")){
			cuenta = obj.getnover();
			System.out.println("tienen derecho a cometer 4 errores");
			error = 0;
			while((true) && (error <4)){
				try{
				cuenta = obj.getnover();
				System.out.println("ingrese el digito " + (cuenta + 1 ) + " : ");
				digito = ent.nextInt();
				if((digito<26) && (digito > -1)){
					if(obj.press(digito, cuenta) == true){
						obj.setnover();
						est = obj.isLocked();
						if(est == false){
							estado = "abierto";
							error = 0;
							accion = "bloquear";
							break;
						}
						
					}
					else{
						System.out.println("el digito que ingreso no coincide");
						
						obj.reset();
						
						error++;
						System.out.println("le quedan " + (4-error) + " oportunidades ");
					}
						
				}
				else{
					System.out.println("el digito que ingreso no esta en el rango de numero disponibles");
					obj.reset();
					error++;
					System.out.println("le quedan " + (4-error) + " oportunidades ");
				}
				
				}
				catch(Exception excep){
					System.out.println("el digito que ingreso no es valido");
					obj.reset();
					ent.next();
					error++;
					System.out.println("le quedan " + (4-error) + " oportunidades ");
					
				}
				
				
			}
		
		}
		
		
		else{
			obj.lock();
			estado = "cerrada";
			accion = "introducir combinacion";
		
		
		}
		}
		
		if(op.equals("2")){
		
			System.out.println("gracias por utilizar el programa");
			break;
		
		
		}
			
		}
		
	}

	}	

